package com.syedu.day09;

/**
 * @Description static(静态)关键字, 它是一个修饰符
 *
 * 修饰属性 --> 静态属性
 * 普通属性初始化的时机是当调用构造方法创建对象时,如果多次调用构造方法,则普通属性值会重新赋值(重置)
 * 静态属性初始化的时机是类加载的时候,而且只执行一次,即不会重置
 *
 * 应用: 利用静态属性来产生唯一性的自增ID
 *
 * @createTime 2022/3/18 14:35
 * @author Administrator
 */
public class StaticField {
    //普通属性
    private int id;
    //静态属性
    private static int guid;

    public StaticField() {
        this.id = guid++;
    }

    public static void main(String[] args) {
        //静态属性访问方式,类名.属性名
        //注意:如果访问的静态属性就是本类中则类名可以省略
        //System.out.println(StaticField.guid);
        //System.out.println(guid);

        //普通属性访问方式,先创建对象,再访问
        //StaticField staticField = new StaticField();
        //System.out.println(staticField.id);

        StaticField s1 = new StaticField();
        StaticField s2 = new StaticField();
        StaticField s3 = new StaticField();
        System.out.println(s1.id);
        System.out.println(s2.id);
        System.out.println(s3.id);
    }
}
